Open Redirection
URLのqueryに、URLを指定してredirectさせる実装による脆弱性
例えば、以下のようなloginページのURL
http://example.jp/login/?continue=http://trap.example.com/
このサイトでは、login後に、http://trap.example.com/に遷移する
任意のdomainにredirectできることが脆弱性になる
例えば、login後に、その本物のサイトに似せたページに遷移させて、個人情報を入力させるとか
userが「遷移先は安全」と捉えているのに、そうでない場合がある、というのが問題
外部のサイトに飛ぶことが自明な場合は問題にならない
対策
そもそもqueryを使ってredirectさせる以外の方法を検討する
redirect先のページを固定する
redirect先のURLを直接指定せず番号指定にする
対応表を内部で持っておく
任意のdomainには飛べなくなる
redirect処理の中に、特定のdomainのみにしか遷移させないような実装をする
任意のdomainに遷移できることが問題
落とし穴が多いので注意
かなり厳格に正規表現を書く必要がある
domainだけしかチェックしていないと、↓こういうURLが通過してしまう
http://trap.example.com/example.jp.php
redirect先を、特定のdomainに固定する
e.g. ?continue=/top
domain名を含めない
正規表現の実装も楽になる
事前に決められたdomainの中にのみ遷移する
「今から外部サイトhttps://example.comに遷移しようとしています」みたいなやつを表示する
参考
攻撃の具体例など